package com.library.service;

import com.library.pojo.dto.user.*;
import com.library.pojo.entity.LibraryUsers;
import com.library.pojo.vo.UserVO;
import com.library.result.PageResult;
import com.library.result.Result;

import java.util.List;

/**
 * 管理员对图书进行增删改查
 */
public interface UserService {

    /**
     * 查询个人信息
     * @param userId 用户编号
     * @return 个人信息
     */
    UserVO selectUserInfo(int userId);

    /**
     * 修改登录用户密码
     * @param userChangePasswordDTO 改密参数（必填：userId/oldPassword/newPassword）
     */
    int changePassword(UserChangePasswordDTO userChangePasswordDTO);

    /**
     * 新增用户
     * @param userRegisterDTO 注册参数（必填：username/password）
     */
    int register(UserRegisterDTO userRegisterDTO);

    /**
     * 用户登录
     *
     * @param userLoginDTO 登录参数（必填：username/password）
     */
    LibraryUsers login(UserLoginDTO userLoginDTO);

    /**
     * 管理员分页查询用户
     * @param userPageQueryDTO 分页参数（必填：pageNum/pageSize；可选：userId/username关键词）
     * @return 分页用户列表
     */
    Result<PageResult> pageQuery(UserPageQueryDTO userPageQueryDTO);

    /**
     * 添加用户
     * @param userDTO 注册参数（可选：username/password/role等）
     */
    int insert(UserDTO userDTO);

    /**
     * 根据用户编号修改用户信息
     * @param userDTO 修改参数（必填：userId；可选：username/password/role等）
     */
    int update(UserDTO userDTO);

    /**
     * 根据用户编号删除用户
     * @param userId 用户编号
     */
    int deleteById(int userId);
}
